import Vue from 'vue';
import { USERINFO } from '@/store/mutation-types';
import { userInfo } from '@/api/user';
import { getOneArr } from '@/utils/common';
// import UserLayout from '@/components/Layouts';
// import { UserLayouts } from '@/layouts';
function setInfo(res, commit) {
  Vue.ls.set(USERINFO, res);
  commit('SET_USERINFO', res);
  if (res.webMenus && (res.webMenus instanceof Array)) {
    const webMenu = getOneArr(res.webMenus);
    Vue.ls.set('webMenu', webMenu.map(e => e.modelName));
    commit('SET_MODELNAME', webMenu.map(e => e.modelName));
  }
}
// const menuKey = {
//   任务填报管理: {
//     path: '/index',
//     component: UserLayouts
//   },
//   填报情况管理: {
//     path: '/fillList',
//     component: () => import('@/views/urban/Index.vue')
//   },
//   系统管理: {
//     path: '/system',
//     component: UserLayouts
//   },
//   账号管理: {
//     path: '/account',
//     component: () => import('@/views/system/Index.vue')
//   },
//   权限管理: {
//     path: '/role',
//     ccomponent: () => import('@/views/system/Role.vue')
//   }
// };

// console.log(menuKey);

const user = {
  state: {
    userInfo: '',
    router: [],
    menuList: [],
    modelName: []
  },

  mutations: {
    SET_USERINFO: (state, userInfo) => {
      state.userInfo = userInfo;
    },
    SET_MODELNAME: (state, modelName) => {
      state.modelName = modelName;
    },
    SET_ROUTER: (state, router) => {
      state.router = router;
    },
    SET_MENU: (state, menuList) => {
      state.menuList = menuList;
    }
  },

  actions: {
    // // 获取用户信息
    UserInfo({ commit, dispatch, state }, defaultInfo) {
      if (defaultInfo) {
        setInfo(defaultInfo, commit);
      }
      return new Promise((resolve, reject) => {
        if (Vue.ls.get(USERINFO) && Vue.ls.get('webMenu')) {
          commit('SET_USERINFO', Vue.ls.get(USERINFO));
          commit('SET_MODELNAME', Vue.ls.get('webMenu'));
          resolve();
          return;
        }
        userInfo().then(res => {
          res.data.realName = Vue.ls.get(USERINFO).realName;
          setInfo(res.data, commit);
          resolve();
        });
        // if (!info && userInfo) {
        //   const userInfoCopy = JSON.parse(JSON.stringify(userInfo));
        //   Vue.ls.set(USERINFO, userInfoCopy, 1 * 24 * 60 * 60 * 1000);
        //   commit('SET_USERINFO', userInfoCopy);
        //   dispatch('getMenu', userInfoCopy.menus);
        //   // this.getMenu(userInfoCopy.menus);
        //   resolve();
        // } else {
        //   // dispatch('addRouter', info.menus);
        //   commit('SET_USERINFO', info);
        //   dispatch('getMenu', info.menus);
        //   resolve();
        // }
      });
    },
    getMenu({ commit, state }, menus) {
      if (state.menuList.length) return;
      const m = [];
      function getmenus(children) {
        children.forEach(e => {
          m.push(e.menuId);
          if (e.children) {
            getmenus(e.children);
          }
        });
      }
      getmenus(menus);
      commit('SET_MENU', m);
    },
    addRouters({ commit }, menus) {
      // const router = [
      //   // 菜单路由
      //   {
      //     path: '/enter',
      //     component: UserLayout,
      //     children: []
      //   }
      // ];

      // const r = {};

      // function setMenu(children) {
      //   children.forEach(e => {
      //     if (menuKey[e.menuName]) {
      //       e.meta = {};
      //       e.meta.title = e.menuName;
      //       e.component = menuKey[e.menuName].component;
      //       e.path = menuKey[e.menuName].path;
      //       if (e.children && e.children.length) {
      //         // setMenu(e.children);
      //       }
      //     }
      //   });
      // }
      // setMenu(menus);
      console.log(menus);
      // router.children.push(menus);
    }

  }

};

export default user;
